function updatePoint({
  position,
  fid,
  layer,
  attValue,
  style = {},
  layerIndex,
}) {
  console.log('updatePoint函数接收参数:', {
    position,
    fid,
    attValue,
    style,
    layerIndex,
  })

  //1.更新几何信息
  const gPoint = new Zondy.Object.GPoint(position[0], position[1])
  const fGeom = new Zondy.Object.FeatureGeometry({
    PntGeom: [gPoint],
  })

  // 确保attValue是正确的格式
  let processedAttValue
  if (!attValue) {
    console.error('attValue为空，使用默认空数组')
    processedAttValue = []
  } else if (Array.isArray(attValue)) {
    processedAttValue = attValue
    console.log('使用数组格式的attValue:', processedAttValue)
  } else if (typeof attValue === 'object') {
    // 将对象转为数组
    processedAttValue = Object.values(attValue)
    console.log('将对象转换为数组格式的attValue:', processedAttValue)
  } else {
    // 其他情况：字符串、数字等，包装为数组
    processedAttValue = [attValue]
    console.log('将非对象非数组值包装为数组:', processedAttValue)
  }

  // 从处理状态获取正确的颜色
  let pntColor = 6 // 默认颜色
  // 获取处理状态 - 第8个元素，索引为7
  const processStatus = processedAttValue[7]
  console.log('处理状态:', processStatus)

  // 根据处理状态设置颜色 - 与addPoint.js保持一致
  switch (processStatus) {
    case '0':
    case 0:
      pntColor = 6 // 黄色 - 待处理
      break
    case '1':
    case 1:
      pntColor = 4 // 蓝色 - 处理中
      break
    case '2':
    case 2:
      pntColor = 7 // 绿色 - 已处理
      break
    default:
      pntColor = 6 // 默认黄色
  }

  // 如果传入了特定的颜色，可以覆盖自动计算的颜色
  if (style && style.color !== undefined) {
    pntColor = style.color
  }

  console.log('设置的点颜色:', pntColor)

  //更新样式信息 - 与addPoint.js保持一致
  const pointInfo = new Zondy.Object.CPointInfo({
    //子图角度，取值范围为0~360。
    Angle: 0,
    //子图颜色（请参考MapGIS颜色库中颜色编号）
    Color: pntColor, // 使用根据处理状态计算的颜色
    //子图高度
    SymHeight: 6, // 与addPoint.js保持一致
    //子图ID（请参考MapGIS符号库中线符号编号）
    SymID: 21, // 与addPoint.js保持一致
    //子图宽度
    SymWidth: 6, // 与addPoint.js保持一致
  })
  //设置当前要素的图形参数信息
  const webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
    InfoType: 1, //1=>point 2=>line 3=>aarea
    PntInfo: pointInfo,
  })

  console.log('创建Feature对象前的attValue:', processedAttValue)

  const newFeature = new Zondy.Object.Feature({
    //更新的时候 Attvalue 必须更新(可以传之前相同的值) 其他2个配置 可以不更新
    fGeom,
    GraphicInfo: webGraphicInfo,
    AttValue: processedAttValue,
  })
  newFeature.setFType(1)
  //将新增要素的id设置为需要修改的那个要素的id
  newFeature.setFID(fid)

  /* 2、创建要素集映射 */
  //创建一个点要素数据集
  const featureSet = new Zondy.Object.FeatureSet()
  //设置属性结构 - 与addPoint.js保持一致
  const cAttStruct = new Zondy.Object.CAttStruct({
    FldName: [
      '事件编号',
      '事件类型',
      '事件等级',
      '发生时间',
      '发生地点',
      '车牌号',
      '驾驶员',
      '处理状态',
    ],
    FldNumber: 8,
    FldType: [
      'string',
      'string',
      'int',
      'string',
      'string',
      'string',
      'string',
      'int',
    ],
  })
  featureSet.AttStruct = cAttStruct
  //添加要素到要素数据集
  featureSet.addFeature(newFeature)

  /* 3、调用服务执行更新 */
  const editService = new Zondy.Service.EditDocFeature('地图文档', layerIndex, {
    ip: 'localhost',
    port: 6163,
  })
  return new Promise((resolve, reject) => {
    try {
      editService.update(featureSet, (data) => {
        console.log('更新服务返回数据:', data)
        const result = onPointSuccess(data, layer)
        resolve(result)
      })
    } catch (error) {
      console.error('更新服务调用失败:', error)
      reject(error)
    }
  })
}
function onPointSuccess(data, layer) {
  if (data.succeed) {
    ElMessage.success('事件状态更新成功!')
    layer.refresh()
    return true
  } else {
    ElMessage.error('事件状态更新失败: ' + (data.exception || '未知错误'))
    return false
  }
}

export default updatePoint
